import time
import random
import numpy as np
import pandas as pd

start_time = time.time()  # 记录程序开始运行时间

# 随机生成15个学生成绩
random.seed(1)
list_a=['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O']
dct={}
for li in list_a:
    dct[li]=random.randint(35,100)
print(dct)

# 形成成绩统计数组
list_key =[]
list_value=[]
for key,value in dct.items():
    list_key.append(key)
    list_value.append(value)

data = pd.DataFrame({'学生姓名':list_key,'学生成绩':list_value})
print("15名学生成绩统计数组：")
print(data)

# 将学生成绩降序排列输出
new_dct = sorted(dct.items(), key=lambda x: x[1], reverse=True)
print('按降序排列学生成绩为:',f'\n{new_dct}')

# 计算学生成绩平均分、最大值、最小值
pingjun=round(np.array(list(dct.values())).mean(),2)
print('平均分是:',pingjun)
print('最高分是:',max(dct.values()))
print('最低分是:',min(dct.values()))

# 统计不及格人数
num=0
for key, value in dct.items():
    if value<60:
        num = num+1
print("不及格的人数:{}".format(num))

# 查询学生成绩及等级水平
times = 0
while True:
    try:
        name = input("\n请输入学生姓名(注意大小写，OUT为退出):")
        if name == 'OUT':
            break
        if name != '':
            print('该名同学成绩为',dct.get(name))
            times += 1
            if dct.get(name)>pingjun:
                print("该生成绩属于上等水平")
            elif dct.get(name)<pingjun:
                print("该生成绩属于下等水平")
            else:
                print("该生成绩属于中等水平")
    except Exception:
        print('请输入正确的学生名字!')

print('查询次数为：{}次'.format(times))  # 统计查询次数

end_time = time.time()  # 记录程序结束运行时间
print('cost %f second' % (end_time - start_time))


